package org.richin.web.security.util;

import org.richin.lang.util.StringUtils;

/**
 *防止SQL注入的类
 *防止SQL注入 最简单的办法是杜绝SQL拼接,
 *SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑，如果使用PreparedStatement执行SQL语句，其后只是输入参数，
 * SQL注入攻击手段将无效，这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构
 * @author Administrator
 *
 */
public class SQLInjection {
	public static String CheckSqlQueryString(final String queryStr) {
		try {
			if (queryStr == null || queryStr.equals(""))
				return "";

			StringBuffer stringbuffer = new StringBuffer();
			for (int i = 0; i < queryStr.length(); i++) {
				char c = queryStr.charAt(i);
				switch (c) {

				case 34: // '"'
					stringbuffer.append("&quot;");
					break;

				case 39: // '\''
					stringbuffer.append("&#039;");
					break;

				case 124: // '|'
					stringbuffer.append("");
					break;

				case '&':
					stringbuffer.append("&amp;");
					break;

				case '<':
					stringbuffer.append("&lt;");
					break;

				case '>':
					stringbuffer.append("&gt;");
					break;

				default:
					stringbuffer.append(c);
					break;
				}
			}
			return StringUtils.trim(stringbuffer.toString());

		} catch (Exception e) {
			return "";
		}
	}

}
